home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / vgakit41 / svgamode.asm < prev    next >
Assembly Source File  |  1991-10-02  |  2KB  |  134 lines

  1.  
  2.     include model.h
  3.  
  4. ;
  5. ;    VGAKIT Version 4.1
  6. ;
  7. ;    Copyright 1988,89,90,91 John Bridges
  8. ;    Free for use in commercial, shareware or freeware applications
  9. ;
  10. ;    SVGAMODE.ASM
  11. ;
  12. ;
  13. .data
  14.     extrn    cirrus:byte,everex:byte,paradise:byte,tseng:byte,trident:byte
  15.     extrn    t8900:byte,ativga:byte,aheada:byte,aheadb:byte
  16.     extrn    oaktech:byte,video7:byte,chipstech:byte,tseng4:byte,genoa:byte
  17.     extrn    ncr:byte,compaq:byte,vesa:byte
  18.     extrn    vga512:byte,vga1024:byte
  19.  
  20.     extrn    curbk:word
  21.  
  22.     public    maxx,maxy,xwidth
  23.  
  24. maxx    dw    ?        ;xwidth of screen in pixels
  25. maxy    dw    ?        ;height of screen in pixels
  26. xwidth    dw    ?        ;actual xwidth of screen in bytes
  27.  
  28. .code
  29.  
  30.     public    svgamode
  31.     public    txtmode
  32.     public    setmany
  33.  
  34. svgamode proc            ;Set 640x480x256 on most SVGA cards
  35.     cmp    [vesa],0
  36.     jz    novs
  37.     mov    ax,4f02h
  38.     mov    bx,101h
  39.     jmp    godo
  40. novs:    cmp    [compaq],0
  41.     jz    nocp
  42.     mov    ax,2eh
  43.     jmp    godo
  44. nocp:    cmp    [genoa],0
  45.     jz    nogn
  46.     mov    ax,5ch
  47.     jmp    godo
  48. nogn:    cmp    [ncr],0
  49.     jz    noncr
  50.     mov    ax,5fh
  51.     jmp    godo
  52. noncr:    cmp    [oaktech],0
  53.     jz    noak
  54.     mov    ax,53h
  55.     jmp    short godo
  56. noak:    cmp    [aheada],0
  57.     jnz    @f
  58.     cmp    [aheadb],0
  59.     jz    noab
  60. @@:    mov    ax,61h
  61.     jmp    short godo
  62. noab:    cmp    [everex],0
  63.     jz    noev
  64.     mov    ax,70h
  65.     mov    bl,30h
  66.     jmp    short godo
  67. noev:    cmp    [ativga],0
  68.     jz    noati
  69.     mov    ax,62h
  70.     jmp    short godo
  71. noati:    cmp    [trident],0
  72.     jz    notr
  73.     mov    ax,5dh
  74.     jmp    short godo
  75. notr:    cmp    [video7],0
  76.     jz    nov7
  77.     mov    ax,6f05h
  78.     mov    bl,67h
  79.     jmp    short godo
  80. nov7:    cmp    [chipstech],0
  81.     jz    noct
  82.     mov    ax,79h
  83.     jmp    short godo
  84. noct:    cmp    [paradise],0
  85.     jz    nopd
  86.     mov    ax,5fh
  87.     jmp    short godo
  88. nopd:    cmp    [tseng],0
  89.     jz    nots
  90.     mov    ax,2eh
  91. godo:    int    10h
  92.  
  93.     mov    [curbk],-1
  94.     mov    ax,640
  95.     mov    [maxx],ax        ;default xwidth to 640 for now
  96.     cmp    [compaq],0
  97.     jz    nokludge
  98.     mov    ax,1024
  99. nokludge:
  100.     mov    [xwidth],ax
  101.     mov    ax,40h
  102.     mov    es,ax
  103.     mov    al,es:[84h]        ;get height of screen
  104.     inc    al
  105.     mul    byte ptr es:[85h]
  106.     mov    [maxy],ax
  107.  
  108. nots:    ret
  109. svgamode endp
  110.  
  111. txtmode    proc
  112.     mov    ax,3
  113.     int    10h
  114.     ret
  115. txtmode    endp
  116.  
  117. setmany proc    palbuf:ptr byte,begcol:word,numcol:word
  118. if @Datasize
  119.     les    dx,[palbuf]
  120. else
  121.     mov    ax,ds
  122.     mov    es,ax
  123.     mov    dx,[palbuf]
  124. endif
  125.     mov    bx,[begcol]
  126.     mov    cx,[numcol]
  127.     mov    ax,1012h
  128.     int    10h
  129.     ret
  130. setmany endp
  131.  
  132.     end
  133.  
  134.